<!--单行文本-->
<template>
  <el-input
    v-model="value"
    v-bind="$attrs"
    :id="'c' + meta.columnId"
    :name="'c' + meta.columnId"
    :clearable="clearable"
    :prefix-icon="($icon)?$icon[prefixIcon]:''"
    :suffix-icon="($icon)?$icon[suffixIcon]:''"
    @blur="run"
    @change="run"
    @clear="run"
    @keydown="clear"
  >
  </el-input>
</template>
 
<script setup lang="ts" generic="T extends object">
  import type { IFormItemProps } from '../../map'
  import { itemController } from '../../map'

  defineOptions({
    name: 'nf-el-form-item-text',
    inheritAttrs: false,
  })

  // 定义 props
  // const props = defineProps<IFormItemProps<T>>()
  
  // 必填的，还必须设置默认值，那这个默认值，有啥用？
  // 好吧，不是这里要求，是下面的函数要求。
  const props = withDefaults(defineProps<IFormItemProps<T> & {
    prefixIcon?: string,
    suffixIcon?: string
  }>(), {
    meta: () => {
      return {
        colName: ''
      }
    },
    model: () => {
      return {} as T
    },
    clearable: true 
  })

  // console.log('props', props)

  // 支持防抖等功能
  const {
    value,
    run,
    clear
  } = itemController(props)

  // 设置默认值
  if (props.meta.defValue) {
    value.value = props.meta.defValue
  }
  
</script>
